#include<stdio.h>

//数组指针
void PrintArray(int (*a)[3], int size)
{
    for(int i=0;i<size;i++)
    {
        for(int j=0;j<3;j++)
        {
            printf("%d ",a[i][j]); //在内存里面是连续排布的
        }
        printf("\n");
    }
}

int main()
{
    //二维数组：多个一维数组的集合
    int a[2][3]=
    {
        {1,2,3},
        {4,5,6}
    }; //两个一维数组

    // PrintArray(a,2);

    //a：数组指针:指向第一个一维数组
    //a[0]:元素指针：指向第一个一维数组的第一个元素
    //a[0] == &a[0][0]
    //&a: 二维数组指针：走一步跨一个二维数组
    // printf("%p %p %p %p\n",a,a[0],&a[0][0],&a);
    // printf("%p %p %p %p\n",a+1,a[0]+1,&a[0][0]+1,&a+1);

    // printf("%d\n",*(*a+1));

    // a[i][j]=*(*(a+i)+j) 恒成立
    // printf("%d\n",a[1][1]);

    int (*p)[2]=a; //用另外一个指针指向数组指针时，步长=指向数组指针的步长
    printf("%d\n",**(p+1));
    return 0;
}